(function($) {
    $.widget('mlh.showItem', $.ui.dialog, {
        options: {
            modal: true,
            width: 1020,
            height: 500,
            autoOpen: true,
            title: '',
            resizable: false,
            itemId: false,

            //данные
            data: false,

            //урл для подгрузки новых данных
            url: false,

            //шаблон
            template: "template.html",

            template_name: "item",

            //функция постоения данных для загрузки
            urlParams: function(){
                return {
                    info: this.itemId
                }
            },

            //тип AJAX запроса
            requestType: 'GET'
        },

        _create: function() {
            var this_ = this;
            $.ui.dialog.prototype._create.call(this);
            $.ui.dialog.prototype._createButtons.call(this, {
                refresh: function(){
                    this_.refresh();
                }
            });
            this._render();
        },

        //отрисовка
        _render: function() {
            var this_ = this;
            //загружаем шаблон
            app.main.getTemplate(this.options.template, function(){
                this_._buildTable();
            });
        },

        //перерисовываем данные
        _buildTable: function() {
            var this_ = this;
            if (!this.options.data && this.options.url) {
                //если данных нет и указан урл то подгружаем их
                this._getData(function(data){
                    if (!data) return;
                    this_.options.data = data;
                    this_._addData(this_.options.data);
                    //запускаем колбек
                    this_.element.trigger('on_show_item_after_build',this_);
                });
            } else if (this.options.data){
                //рисуем данные
                this._addData(this.options.data);
                //запускаем колбек
                this.element.trigger('on_show_item_after_build',this);
            }
        },

        //отрисовка данных
        _addData: function(data) {
            $.tmpl( this.options.template_name, data )
                .appendTo(this.element);
            //set title
            $.ui.dialog.prototype._setOption.call(this, 'title', data.name);
        },

        //загружаем данные
        _getData: function(callback) {
            if (!this.options.url) {
                callback(false);
                return;
            }
            $.ajax(
            {
                url: this.options.url,
                dataType: 'json',
                type: this.options.requestType,
                data: this.options.urlParams(),
                success: function(data) {
                    if (app.debug.ajax) console.log('AJAX success', data, this)
                    callback(data);
                },
                error: function(data) {
                    if (app.debug.ajax) console.log('ERROR AJAX load data', this);
                    callback(false);
                }
            });
        },
        refresh: function() {
            if (!this.options.url) return;
            this.element.html('');
            this.options.data = false;
            this._buildTable();
        },
        setOption: function(key, value) {
        if (value != undefined) {
              this.options[key] = value;
              this._render();
              return this;
        } else {
            return this.options[key];
        }
      }
    });

})(jQuery);